草庐IT

C++ is_member_pointer 实现

全部标签

json - 如何为从 Go 中的标量派生的类型实现 UnmarshalJSON?

我有一个简单的类型,它在Go中实现了子类型整数常量到字符串的转换,反之亦然。我希望能够自动将JSON中的字符串解码为这种类型的值。我不能,因为UnmarshalJSON没有给我返回或修改标量值的方法。它需要一个结构,其成员由UnmarshalJSON设置。除了内置标量类型,“,string”方法也不起作用。有没有办法为派生的标量类型正确实现UnmarshalJSON?这是我所追求的一个例子。我希望它打印四次“HelloRalph”,但它打印了四次“HelloBob”,因为PersonID没有被更改。packagemainimport("encoding/json""fmt")typeP

pointers - 通过将指针传递给 Go 中的函数来获取不同的值

假设我想将一个指针传递给一个函数,并通过这样做更改该指针指向的结构的值。我通常会通过取消引用指针来做到这一点:typeTeststruct{Valueint}funcmain(){variTest=Test{2}varp*Test=&if(p)println(i.Value)//4}funcf(p*Test){*p=Test{4}}我的问题是,为什么这段代码没有改变值typeTeststruct{Valueint}funcmain(){variTest=Test{2}varp*Test=&if(p)println(i.Value)//2}funcf(p*Test){//?p=&Test

json - 接口(interface)转换: interface is map[string]interface {} not

我对Go中的所有不同类型感到非常困惑,但我有一个严格定义的结构“VMR”,我正在尝试将数据转换为它。我正在查询CouchDB(使用GoSDK),然后尝试将返回的数据断言到我的结构中。当然,这是行不通的,它引发了panic。我在黑暗中拍摄,试图找出我做错了什么。这是我的函数/结构:typeVMRstruct{Namestring`json:"name,omitempty"`InUsebool`json:"inuse"`Descriptionstring`json:"description,omitempty"`Viewstring`json:"view,omitempty"`Themes

pointers - 在 Golang 中取消引用 map 索引

我目前正在学习Go,我制作了这个简单粗暴的list程序,只是为了修补结构和方法以了解它们的工作原理。在驱动程序文件中,我尝试从Cashier类型的项目映射中调用方法和项目类型。我的方法有指针接收器直接使用结构而不是制作副本。当我运行程序时出现此错误.\driver.go:11:cannotcallpointermethodonf[0].\driver.go:11:无法获取f[0]的地址Inventory.go:packageinventorytypeitemstruct{itemNamestringamountint}typeCashierstruct{itemsmap[int]ite

json - Golang : Protobuff generated Struct is not decoding child attribute for json. 解码

我有一个结构体正在与protobuff序列化器一起使用并且运行良好。这个结构是由protobuff生成的,因此它有很多方法,比如Unmarshal等。typeFlightstruct{FlightNostring`json:"flightno,omitempty"`Carrierstring`json:"carrier,omitempty"`}func(m*Flight)Unmarshal(data[]byte)error{l:=len(data)iNdEx:=0foriNdEx=64{returnErrIntOverflowFlight}ifiNdEx>=l{returnio.Err

go - 如何在 Golang 中为任何模型实现基本的 CRUD 操作?

我正在实现数据库API。我有模型。我需要对每个模型实现CRUD操作。现在,我为每个模型创建了一个单独的GetAllModels函数和Get方法。我如何才能对所有模型执行一次,并在需要时传递一些变量?下面我为每个模型使用的模式:typeCitystruct{Attr1stringAttr2string}typeCountrystruct{Attr1stringAttr2string}funcGetAllCities(db*sqlx.DB)([]*City,error){items:=[]*City{}err:=db.Select(&items,"SELECT*FROMcities")//

go - 无法将实现 Foo 接口(interface)的结构 slice 传递给需要 []Foo 的函数

我正在尝试使用Go中的接口(interface),但我似乎无法将实现某个接口(interface)的结构片段传递给需要接口(interface)片段的函数。它适用于只接受单个对象的函数,但不适用于需要接口(interface)slice的函数。使用下面的代码我得到以下错误:./main.go:27:cannotusefooBar(type[]*FooBar)astype[]FooinargumenttoFooBarBar代码如下:packagemainimport"fmt"typeFoointerface{Bar()bool}typeFooBarstruct{abool}func(f*

pointers - Go 中的临时地址?

处理这种情况最干净的方法是什么:funca()string{/*doesn'tmatter*/}b*string=&a()这会产生错误:cannottaketheaddressofa()我的理解是,如果它的地址被占用,Go会自动将局部变量提升到堆中。这里很明显是要取返回值的地址。处理此问题的惯用方法是什么? 最佳答案 地址运算符返回指向具有“家”的东西的指针,例如一个变量。您的代码中表达式的值是“无家可归”。如果你真的需要一个*string,你必须分两步完成:tmp:=a();b:=&tmp请注意,虽然*string有完全有效的用例

go - 在结构映射中实现结构集

我有一个结构映射如下:typeSocketIDstringtypeSocketstruct{socket//...idstring}typeChannelstruct{sync.Mutexsocketsmap[SocketID]Socket}我希望能够为其添加子channel,其中每个Socket都属于一个子channel。我尝试将channel结构更改为此:typeSubchannelIDstringtypeChannelstruct{sync.Mutexsocketsmap[SocketID]Socketsubchannelsmap[SubchannelID]map[SocketI

去加载页面问题 : invalid memory address or nil pointer dereference

我正在按照golang.org教程构建wiki页面(https://golang.org/doc/articles/wiki/#tmp_4)并且一切运行正常,直到我在“使用net/http为wiki页面提供服务”步骤中收到上述错误消息。我在src/github.com/user/gowiki/test.txt中有一个text.txt文件,但loadPage(title)似乎没有访问test.txt文件。任何帮助是极大的赞赏。谢谢!packagemainimport("fmt""io/ioutil""net/http")typePagestruct{TitlestringBody[]by